日本語 LaTeX 文書で latexdiff により差分 PDF を生成した際に発生する行はみ出し問題の対処
問題
LaTeX 文書の差分生成に latexdiff(または latexdiff-vc)を使用した際、日本語テキストを含む文書で差分 PDF の一部行がページ右側にはみ出すことがある。通常の PDF では問題がないにもかかわらず、差分 PDF のみで発生することが多い。
原因
latexdiff のデフォルト設定では、変更箇所の強調に ulem パッケージによる下線や取り消し線が使用される。このマークアップは内部的にテキストを box で囲むため、日本語特有の自動改行処理(禁則処理・行分割)が効きにくくなり、行が折り返されず右側へはみ出すことがある。
解決策
latexdiff のマークアップ方式を変更し、下線・取り消し線を使わないスタイルを指定することで日本語の自動改行を妨げないようにする。特に -t CFONT 方式は色とフォントだけで差分を表現するため、日本語環境でも安定して改行が行われる。
手順
1. latexdiff の実行時にマークアップ方式を CFONT に変更する。
code: (bash)
latexdiff -t CFONT old.tex new.tex > diff.texまたは latexdiff-vc を使用している場合は次のように指定する。
code: (bash)
latexdiff-vc -t CFONT --git --revision=<rev> main.tex
2. 生成された差分用 TeX ファイルを通常通り LaTeX エンジンでコンパイルする。
3. 差分 PDF の日本語部分において、右側へのはみ出しや改行不良が解消されていることを確認する。
備考
CFONT 方式は見た目は従来の下線・取り消し線と異なるが、日本語文書における組版の安定性が高い。
本手法は LaTeX エンジン(platex, uplatex, lualatex, xelatex 等)に依存せず有効な場合が多い。
下線を維持したい場合は他にも対処法があるが、追加パッケージや後処理が必要となるため、汎用性・安全性を優先する場合は CFONT 方式が最も扱いやすい。